package co.edu.udea.lab.dao;

import java.util.List;

import co.edu.udea.lab.dto.Rol;
import co.edu.udea.lab.util.exception.LabDAOException;

/**
 * Interfaz que define los metodos que va a proveer el dao de rol
 * @author Edison Castro
 *
 */
public interface IRolDAO {

	/**
	 * Entrega la lista de todos los roles existentes en la base de datos
	 * @return Lista de Roles
	 * @throws LabDAOException, si ocurre problema obteniendo las listas
	 */
	public List<Rol> obtenerRoles() throws LabDAOException;
	
	/**
	 * Entrega los datos especificos de un rol
	 * @param Codigo del rol que se espera encontrar
	 * @return Instancia con los datos del rol obtenido, si no existe el rol retorna null.
	 * @throws LabDAOException
	 */
	public Rol obtenerRol(Integer codigo) throws LabDAOException;
	
	/**
	 * Guarda un registro de rol en la base de datos
	 * @param rol Instancia del rol a guardar
	 * @throws LabDAOException
	 */
	public void guardar(Rol rol) throws LabDAOException;
	
	/**
	 * Actualiza un registro de rol en la base de datos, solo permite actualizar su descripcion
	 * @param rol Instancia del rol a actualizar
	 * @throws LabDAOException
	 */
	public void actualizar(Rol rol) throws LabDAOException;
	
	/**
	 * Elimina un registro de rol de la base de datos, solo se puede eliminar si no existen usuarios asociados
	 * @param rol Instancia del rol a eliminar
	 * @throws LabDAOException
	 */
	public void eliminar(Rol rol) throws LabDAOException;
}
